/**
  * 16.10.1 获取运行时类型信息
  * scala 运行时类型信息是保存在 TypeTag 对象中，
  * 编译器在编译过程中将类型信息保存到 TypeTag 中，
  * 并将其携带到运行期。我们可以通过 typeTag方法获取 TypeTag 类型信息。
  */

import scala.reflect.runtime.universe._
typeTag[List[Int]]


typeTag[List[Int]].tpe

/**
  * 如上述 scala REPL 显示，通过 typeTag
  * 方法获取 List[Int]类型的 TypeTag对象，
  * 该对象包含了 List[Int]的详细类型信息，
  * 通过 TypeTag 对象的 tpe 方法得到由 Type
  * 对象封装具体的类型信息，可以看到该 Type
  * 对象的类型信息精确到了类型参数 Int。
  * 如果仅仅是获取类型信息，还有一个更简便的方法，
  * 那就是通过 typeOf 方法。
  */
typeOf[List[Int]]